package com.css.zfzx.sjcj.common;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author Zyl
 * @Date 2021/4/13 18:55
 * @Version 1.0
 * @Describe:
 */
public enum ProgressEnum {

    /**
     * 枚举类也是java类，可以声明属性、方法（构造方法只能是私有的）、可以实现接口，但是不能继承（默认继承了java.lang.Enum），也不能被继承（默认使用final修饰）
     * LOCK,NORMAL 实际是  UserStatus的单例模式，如 public static final UserStatus LOCK = new UserStatus("0","锁定状态")
     * 如果枚举不需要属性，则可以声明一个无参的构造方法，然后定义一个无属性的枚举值，如OTHER
     * 枚举类实现接口后，可以分别在每个对象中实现接口方法
     */

    /**
     * ============================普查数据统计-菜单==================
     */
    PC_DATA_STAT("1", "普查数据统计", "0", null, "1"),

    QH_DANGER("3", "地震危险性评价图", "1", "1", "1"),
    //qh_probability_earthquake_danger
    QH_PEDANGER("301", "地震动PGA等值线图", "2", "3", "1"),
    //qh_risk_level_map_point
    QH_RLMAP_POINT("302", "地震危险性等级图(矢量点)", "2", "3", "1"),
    //qh_risk_level_map_polygon
    QH_RLMAP_POLYGON("303", "地震危险性等级图(矢量面)", "2", "3", "1"),

    FX_ECOLL_MAP("7", "直接经济损失风险评估图及等级图", "1", "1", "1"),
    //fx_picture
    FX_PICTURE_FW("701", "地震灾害房屋直接经济损失评估图", "2", "7", "1"),
    //fx_economic_loss_level_map
    FX_ECOLL_MAP_63("702", "50年超越概率63%地震作用下房屋直接经济损失等级图", "2", "7", "1"),
    FX_ECOLL_MAP_10("703", "50年超越概率10%地震作用下房屋直接经济损失等级图", "2", "7", "1"),
    FX_ECOLL_MAP_2("704", "50年超越概率2%地震作用下房屋直接经济损失等级图", "2", "7", "1"),
    FX_ECOLL_MAP_1("705", "100年超越概率1%地震作用下房屋直接经济损失等级图", "2", "7", "1"),

    FX_CASL_MAP("13", "死亡人口风险评估图及等级图", "1", "1", "1"),
    //fx_picture
    FX_PICTURE_RK("1301", "地震灾害房屋破坏导致的死亡人口评估图", "2", "13", "1"),
    //fx_casualty_level_map
    FX_CASL_MAP_63("1302", "50年超越概率63%地震作用下房屋破坏导致的死亡人口等级图", "2", "13", "1"),
    FX_CASL_MAP_10("1303", "50年超越概率10%地震作用下房屋破坏导致的死亡人口等级图", "2", "13", "1"),
    FX_CASL_MAP_2("1304", "50年超越概率2%地震作用下房屋破坏导致的死亡人口等级图", "2", "13", "1"),
    FX_CASL_MAP_1("1305", "100年超越概率1%地震作用下房屋破坏导致的死亡人口等级图", "2", "13", "1"),

    //Control zoning map 防治区划图
    CONTROL_DIVISION("19", "防治区划图", "1", "1", "1"),
    //fxqh_hdc100
    FXQH_HDC100("1901", "活动断层100m避让缓冲区", "2", "19", "1"),
    //fxqh_hdc200
    FXQH_HDC200("1902", "活动断层200m避让缓冲区", "2", "19", "1"),
    //fxqh_priority
    FXQH_PRIORITY("1903", "抗震加固优先级", "2", "19", "1"),

    FCLTDIST_EVALUATEMAP("23", "房屋建筑、市政设施隐患评估图", "1", "1", "1"),
    //yh_disaster 市政桥梁地震隐患评估成果图
    YH_DISASTER_FW("2301", "房屋建筑物地震隐患评估图", "2", "23", "1"),
    YH_DISASTER_SZ("2302", "市政桥梁地震隐患评估图", "2", "23", "1"),
    YH_DISASTER_CS("2303", "城市自来水厂地震隐患评估图", "2", "23", "1"),

    QH_DRILL("27", "场地地震工程地质条件钻孔", "1", "1", "1"),
    //qh_y02
    QH_DRILL_PK("2701", "实测孔数(PK)", "2", "27", "1"),
    QH_DRILL_SK("2702", "工勘孔数(SK)", "2", "27", "1"),

    HDDC_D_MAP("30", "活动断层分布图编制", "1", "1", "1"),
    // hddc_d_resultmaptable     1:5 万活动断层分布图
    HDDC_D_MAP5("3001", "1:5 万活动断层分布图", "2", "30", "1"),

    EQ_S_MAP("32", "地震构造图编制", "1", "1", "1"),
    // hddc_d_resultmaptable     1:25 万地震构造图编制
    EQ_S_MAP25("3201", "1:25 万地震构造图编制", "2", "32", "1"),

    HDDC_CJ("34", "全国活动断层图", "1", "1", "1"),

    // hddc_activefault
    HDDC_ACTIVEFAULT("3401", "活动断层线", "2", "34", "1"),
    //hddc_activefault_positionerror
    HDDC_ACTIVEFAULT_POSITIONERROR("3402", "活动断层位置误差 ", "2", "34", "1"),

    ;

    /**
     * 菜单id
     */
    private String menuId;
    /**
     * 菜单名称
     */
    private String menuName;
    /**
     * 菜单等级
     */
    private String level;
    /**
     * 父菜单id
     */
    private String pid;

    /**
     * 使用状态
     */
    private String status;

    ProgressEnum(String menuId, String menuName, String level, String pid, String status) {
        this.menuId = menuId;
        this.menuName = menuName;
        this.level = level;
        this.pid = pid;
        this.status = status;
    }

    public String getMenuId() {
        return menuId;
    }

    public String getMenuName() {
        return menuName;
    }

    public String getLevel() {
        return level;
    }

    public String getPid() {
        return pid;
    }

    public String getStatus() {
        return status;
    }

    /**
     * 如果不重写toString方法，在调用枚举的时候，是输出的枚举名
     * 如 TaskInfoEnum.EQ_SURVEY，将输出EQ_SURVEY
     */
    @Override
    public String toString() {
        return "MenuInfoEnum [menuId=" + this.menuId + ", menuName=" + this.menuName + ", level=" + this.level + ", pid=" + this.pid + ", status=" + this.status + "]";
    }

    /**
     * 根据任务名称获取任务对象(枚举实例)
     *
     * @param menuId
     * @return
     */
    public static ProgressEnum getInstanceByName(String menuId) {
        for (ProgressEnum menu : ProgressEnum.values()) {
            if (menu.getMenuId().equals(menuId)) {
                return menu;
            }
        }
        return null;
    }

    public static List<MenuInfo> getMenuInfo() {
        List<MenuInfo> menuInfos = new ArrayList<>();
        for (ProgressEnum menu : ProgressEnum.values()) {
            if ("1".equals(menu.getStatus())) {
                MenuInfo menuInfo = new MenuInfo();
                menuInfo.setMenuId(menu.getMenuId());
                menuInfo.setMenuName(menu.getMenuName());
                menuInfo.setPid(menu.getPid());
                menuInfo.setLevel(menu.getLevel());
                menuInfos.add(menuInfo);
            }
        }
        return menuInfos;
    }

    public static List<MenuInfo> getSonMenuInfo(String menuId) {
        List<MenuInfo> menuInfos = new ArrayList<>();
        for (ProgressEnum menu : ProgressEnum.values()) {
            if (menuId.equals(menu.getPid())) {
                MenuInfo menuInfo = new MenuInfo();
                menuInfo.setMenuId(menu.getMenuId());
                menuInfo.setMenuName(menu.getMenuName());
                menuInfo.setPid(menu.getPid());
                menuInfo.setLevel(menu.getLevel());
                menuInfos.add(menuInfo);
            }
        }
        return menuInfos;
    }

    public static int getSum(String menuId) {
        int index=0;
        for (ProgressEnum menu : ProgressEnum.values()) {
            if (menuId.equals(menu.getPid())) {
                index++;
            }
        }
        return index;
    }

}
